package mastermind.gui.controls;

import mastermind.gui.controls.RatePinUI.RATE_STATE;
import mastermind.logic.Game;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;

/**
 * Diese Klasse stellt die Bewertung einer Reihe dar
 */
public class RateUI extends Composite
{
	private RatePinUI[]	_pins;

	/**
	 * Erstellt ein neues RateUI Objekt
	 * 
	 * @param parent
	 *            Eltern-Objekt, auf das das RateUI Objekt plaziert wird
	 * @param style
	 *            Zus&auml;zliche Style Informationen
	 */
	public RateUI(Composite parent, int style)
	{
		super(parent, style);
		createContents();
	}

	/**
	 * Hier werden alle Elemente erstellt, die ben&ouml;tigt werden um das
	 * Element anzuzeigen<br>
	 * Diese Funktion wird nur einmal pro Objekt aufgerufen
	 */
	private void createContents()
	{
		this.setLayout(new RowLayout(SWT.HORIZONTAL));

		_pins = new RatePinUI[Game.getCntHoles()];

		for (byte i = 0; i < Game.getCntHoles(); i++)
		{
			_pins[i] = new RatePinUI(this, SWT.NONE);
		}
	}

	/**
	 * Setzt die Anzahl der anzuzeigenden Bewertungspins
	 * 
	 * @param cntRightPlaces
	 *            Anzahl richter (schwarzer) Bewertungspins
	 * @param cntWrongPlaces
	 *            Ansahl falscher (wei&szlig;er) Bewertungspins
	 */
	public void setRate(byte cntRightPlaces, byte cntWrongPlaces)
	{
		for (int i = 0; i < cntRightPlaces; i++)
		{
			_pins[i].setState(RATE_STATE.RIGHT);
		}

		for (int i = cntRightPlaces; i < cntRightPlaces + cntWrongPlaces; i++)
		{
			_pins[i].setState(RATE_STATE.WRONG);
		}

		for (int i = cntRightPlaces + cntWrongPlaces; i < _pins.length; i++)
		{
			_pins[i].setState(RATE_STATE.NONE);
		}
	}
}
